﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace nutricion
{
    public class Formulas
    {
        //pesoIdeal
        public static double pesoIdeal(string sex,float he) {
            //Variables locales
            double pesoIdeal=0;

            if(sex=="F")
                pesoIdeal=(he/2)-25;
            else
                pesoIdeal=(he/2)-20;
            return pesoIdeal;
        }

        //pesoSaludable Minimo
        public static double pesoSaludableMin(float he)
        {
            //Variables locales
            double pesoMinimo = 0;

                pesoMinimo = (Math.Pow(he/100,2))*18.5;

            return pesoMinimo;
        }

        //pesoSaludable Maximo
        public static double pesoSaludableMax(float he)
        {
            //Variables locales
            double pesoMaximo = 0;

            pesoMaximo = (Math.Pow(he / 100, 2)) * 24.99;

            return pesoMaximo;
        }

        //IMC
        public static double IMC(float he,float peso)
        {
            //Variables locales
            double IMC = 0;

            IMC = peso/(Math.Pow((he / 100), 2));

            return IMC;
        }

        //ICC
        public static double ICC(float cci,float ccad)
        {
            //Variables locales
            double ICC = 0;

            ICC = cci / ccad;

            return ICC;
        }

        //PPT
        public static double PPT(float actual,string sex,float he)
        {
            //Variables locales
            double PPT = 0,ideal=Formulas.pesoIdeal(sex, he);

            PPT = (actual / ideal)*100;

            return PPT;
        }

        //pesohabitual
        public static double pesoHabitual(float actual, float habitual)
        {
            //Variables locales
            double pesoHabitual = 0;

            pesoHabitual = (actual / habitual)*100;

            return pesoHabitual;
        }

        //Porcentaje de grasa
        public static double grasa(DateTime bd,float he,float peso,string sexo)
        {
            //Variables locales
            double grasa = 0,IMC=Formulas.IMC(he,peso);
            int edad=DateTime.Now.Year-bd.Year;

            if(sexo=="F")
                grasa= (1.20 * IMC + (0.23 * edad) - (10.8 * 0))-5.4; 
            else
                grasa = (1.20 * IMC + (0.23 * edad) - (10.8 * 1)) - 5.4; 
            return grasa;
        }

        //Grasa Masa
        public static double masaGrasa(DateTime bd, float he, float peso, string sexo,float cw)
        {
            //Variables locales
            double masaGrasa = 0,grasa=Formulas.grasa(bd, he, peso,sexo);

            masaGrasa = (grasa*cw / 100);

            return masaGrasa;
        }

        //AMBD
        public static double AMBD(float cbrazo,string sex,float pct)
        {
            //Variables locales
            double AMBD = 0,CMB=0,variable=0;

            CMB=cbrazo-(0.314*pct);
            System.Console.WriteLine(CMB);
            variable=Math.Pow(CMB-(3.1416*(pct/10)),2);
            System.Console.WriteLine(variable);

            if(sex=="F")
                AMBD = (variable/(4*3.1416))-6.5;
            else
                AMBD = (variable / (4 * 3.1416)) - 10;

            return AMBD;
        }


        //porcentaje PAMBD
        public static double PAMBD(float cbrazo, string sex, float pct)
        {
            //Variables locales
            double AMBD = Formulas.AMBD(cbrazo, sex, pct),PAMBD;

            PAMBD = AMBD / 49;
         
            return PAMBD*100;
        }

        //masa muscular total
        public static double masaMuscular(float cbrazo, string sex, float pct,float he)
        {
            //Variables locales
            double AMBD = Formulas.AMBD(cbrazo, sex, pct),masaMuscular;

            masaMuscular = he*(0.0264+0.0029*AMBD);

            return masaMuscular;
        }

        //Carbohidratos que necesito
        public static double CHO(float porcentaje,double kilocalorias)
        {
            //Variables locales
            double CHO;

            CHO = kilocalorias * (porcentaje / 100);

            return CHO;
        }

        //Lipidos que necesito
        public static double lipidos(float porcentaje,double kilocalorias)
        {
            //Variables locales
            double lipidos;

            lipidos = kilocalorias * (porcentaje / 100);

            return lipidos;
        }

        //Lipidos que necesito
        public static double proteinas(float porcentaje,double kilocalorias)
        {
            //Variables locales
            double proteinas;

            proteinas = kilocalorias*(porcentaje/100);

            return proteinas;
        }

        //Kilocalorias
        public static double kilocalorias(string sex,float peso,float altura,DateTime bd)
        {
            //Variables locales
            double kilocalorias;
            int edad = DateTime.Now.Year - bd.Year;

            if(sex=="M")
                kilocalorias = 665.1+(19.56*peso)+(1.85*altura)-(4.68*edad);
            else
                kilocalorias = 66.5 + (13.75 * peso) + (5.08 * altura) - (6.78 * edad);

            return kilocalorias;
        }



        //Cho en gramos
        public static double kilocaloriasGramoCho(float kilocalorias, float porcentaje)
        {
            //Variables locales
            double kiloCalGramo;
            double cho_gramo_caloria = 4;


            kiloCalGramo = (kilocalorias * (porcentaje/100)) / cho_gramo_caloria;

            return kiloCalGramo;
        }

        //Proteinas en gramos
        public static double kilocaloriasGramoProteinas(float kilocalorias, float porcentaje)
        {
            //Variables locales
            double kiloCalGramo;
            double proteina_gramo_caloria = 4;


            kiloCalGramo = (kilocalorias * (porcentaje/100)) / proteina_gramo_caloria;

            return kiloCalGramo;
        }

        //Lipidos en gramos
        public static double kilocaloriasGramoLipidos(float kilocalorias, float porcentaje)
        {
            //Variables locales
            double kiloCalGramo;
            double lipidos_gramo_caloria = 9;


            kiloCalGramo = (kilocalorias * (porcentaje/100)) / lipidos_gramo_caloria;

            return kiloCalGramo;
        }
    }
}
